Міністерство освіти і науки
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Лабораторна робота №4
з дисципліни:
“Проектування засобів захисту інформації в комп'ютерних системах та мережах”
на тему:
“Комбіновані криптосистеми на прикладі цифрового конверта”
Львів
2017
Мета.
Реалізувати програму підтримки комбінованих криптосистем на прикладі цифрового конверта.
Теоретичні відомості.
Сьогодні можна сміливо вважати, що якщо мова йде про передачу даних, то
мається на увазі передача даних в комп'ютерних мережах або між локальними
комп'ютерами. Тут в якості абонентського комплекту буде виступати комп'ютер,
який будь-яким чином (безпосередньо через комп'ютерну мережу, через модем і
стаціонарну телефонну мережу або через мобільний телефон) підключений до
іншого комп'ютера (в разі широкомовних повідомлень - до інших комп'ютерів).
Разом із завданням безпосереднього забезпечення захисту вмісту
повідомлення від несанкціонованого доступу при передачі даних виникає задача
підтвердження автентичності переданого повідомлення.
Як для індивідуального, так і для корпоративного користувача найбільш
прийнятні технології цифрового конверта і цифрового підпису у програмній
реалізації.
Суть технології цифрового конверта в наступному. Генерується унікальне
число –сеансовий ключ. Упаковуння документа в цифровій конверт здійснюється
шляхом обробки за певним алгоритмом, на вхід якого подаються як сам документ,
так і сеансовий ключ. Вилучення документа з конверта можливо тільки при знанні
сеансового ключ. Надалі технологія використання цифрового конверта
визначається технологією керування сеансовоми ключами.
Завдання.
В ході роботи необхідно засвоїти основні принципи побудови комбінованих
криптосистем, розробити програму підтримки комбінованих криптосистем на прикладі цифрового конверта. Для спрощення реалізації розрядність відкритого та
закритого ключів повинна складати до 64 біт.
Текст програми.
package strilets;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigInteger;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;
@SuppressWarnings("serial")
public class DigEnv extends JFrame implements ActionListener {
static String encrTextMes = "", digSign = "";
static BigInteger encrSesKey;
static int size;
JButton jButtonForm = new JButton("Form");
JButton jButtonVerify = new JButton("Verify");
JButton jButtonClear = new JButton("Reset");
JLabel jLabel1, jLabel2, jLabel3, jLabel4, jLabel5;
static JLabel jLabel6;
JLabel jLabel7;
static JTextArea jTextMessage, jEncKey, jEncMes, jDigSig;
@SuppressWarnings("deprecation")
public DigEnv() {
super("Digital envelope");
setSize(1070, 630);
Container cc = getContentPane();
cc.setBackground(Color.green);
jLabel1 = new JLabel("Digital envelope", SwingConstants.CENTER);
jLabel1.setForeground(Color.BLACK);
jLabel1.setFont(new Font("Arial", Font.PLAIN, 30));
jLabel1.setBounds(285, 15, 500, 50);
cc.add(jLabel1);
jLabel2 = new JLabel("Message");
jLabel2.setForeground(Color.BLACK);
jLabel2.setFont(new Font("Arial", Font.PLAIN, 20));
jLabel2.setBounds(30, 60, 500, 50);
cc.add(jLabel2);
jTextMessage = new JTextArea(10, 50);
jTextMessage.setLineWrap(true);
jTextMessage.setBounds(30, 100, 1000, 25);
jTextMessage.setFont(new Font("Arial", Font.PLAIN, 20));
cc.add(jTextMessage);
jLabel3 = new JLabel("Encrypted session key");
jLabel3.setForeground(Color.BLACK);
jLabel3.setFont(new Font("Arial", Font.PLAIN, 20));
jLabel3.setBounds(30, 115, 500, 50);
cc.add(jLabel3);
jEncKey = new JTextArea(10, 50);
jEncKey.setLineWrap(true);
jEncKey.setBounds(30, 155, 1000, 100);
jEnc...